home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
PROGMISC
/
PCSSP.LZH
/
PC-SSP.ZIP
/
MATOPS.ZIP
/
MATA.FOR
< prev
next >
Wrap
Text File
|
1985-11-29
|
2KB
|
59 lines
C
C ..................................................................
C
C SUBROUTINE MATA
C
C PURPOSE
C PREMULTIPLY A MATRIX BY ITS TRANSPOSE TO FORM A
C SYMMETRIC MATRIX
C
C USAGE
C CALL MATA(A,R,N,M,MS)
C
C DESCRIPTION OF PARAMETERS
C A - NAME OF INPUT MATRIX
C R - NAME OF OUTPUT MATRIX
C N - NUMBER OF ROWS IN A
C M - NUMBER OF COLUMNS IN A. ALSO NUMBER OF ROWS AND
C NUMBER OF COLUMNS OF R.
C MS - ONE DIGIT NUMBER FOR STORAGE MODE OF MATRIX A
C 0 - GENERAL
C 1 - SYMMETRIC
C 2 - DIAGONAL
C
C REMARKS
C MATRIX R CANNOT BE IN THE SAME LOCATION AS MATRIX A
C MATRIX R IS ALWAYS A SYMMETRIC MATRIX WITH A STORAGE MODE=1
C
C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C LOC
C
C METHOD
C CALCULATION OF (A TRANSPOSE A) RESULTS IN A SYMMETRIC MATRIX
C REGARDLESS OF THE STORAGE MODE OF THE INPUT MATRIX. THE
C ELEMENTS OF MATRIX A ARE NOT CHANGED.
C
C ..................................................................
C
SUBROUTINE MATA(A,R,N,M,MS)
DIMENSION A(1),R(1)
C
DO 60 K=1,M
KX=(K*K-K)/2
DO 60 J=1,M
IF(J-K) 10,10,60
10 IR=J+KX
R(IR)=0
DO 60 I=1,N
IF(MS) 20,40,20
20 CALL LOC(I,J,IA,N,M,MS)
CALL LOC(I,K,IB,N,M,MS)
IF(IA) 30,60,30
30 IF(IB) 50,60,50
40 IA=N*(J-1)+I
IB=N*(K-1)+I
50 R(IR)=R(IR)+A(IA)*A(IB)
60 CONTINUE
RETURN
END